﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Niknak.Social.Twitter
{
    /// <summary>
    /// Defines a Twitter message (i.e. tweet) retrieved from the Twitter API
    /// </summary>
    public interface IMessage
    {
        /// <summary>
        /// String representation of the Int64 value
        /// </summary>
        string MessageId { get; set; }

        DateTime CreatedAt { get; set; }

        /// <summary>
        /// Indicates if this message is directed at a specific Twitter user
        /// </summary>
        string InReplyToUserId { get; set; }

        /// <summary>
        /// Indicates if this message is a reply to another Twitter message
        /// </summary>
        string InReplyToMessageId { get; set; }

        /// <summary>
        /// Typically the device or software used to post the tweet
        /// </summary>
        string Source { get; set; }

        /// <summary>
        /// If present, the longitude coordinate from the message
        /// </summary>
        double? Longitude { get; set; }

        /// <summary>
        /// If present, the latitude coordinate from the message
        /// </summary>
        double? Latitude { get; set; }

        /// <summary>
        /// Plain text content of the tweet
        /// </summary>
        string Text { get; set; }

        /// <summary>
        /// Entities (URLs, hashtags, pictures and mentions) are parsed into HTML
        /// </summary>
        string TextAsHtml { get; set; }

        IUser Author { get; set; }

        /// <summary>
        /// If this message is a retweet then this property contains the original message
        /// </summary>
        IMessage RetweetedMessage { get; set; }

        /// <summary>
        /// An array of media entities, typically only a single picture
        /// </summary>
        IMedia[] Media { get; set; }
    }
}
